package techaer;

import java.util.Scanner;

public class BubbleSortManager {
	// 属性
		int[] arrSort; // 成员变量（类似于C语言中的全局变量）

		// 行为

		// 数组初始化的行为
		public void doInit() {
			Scanner sc = new Scanner(System.in);
			// 输出的长度
			int len = 0;
			do {
				System.out.println("请输入排序数组的长度：");
				len = sc.nextInt();
			} while (len <= 0);
			// 根据长度初始化数组
			arrSort = new int[len];
			// 扩展作业：此处使用foreach结果会是如何？
			for (int i = 0; i < len; i++) {
				System.out.println("排序数组的[" + i + "]的值：");
				arrSort[i] = sc.nextInt();
				// 赋值给数组的元素
			}
		}

		// 冒泡排序行为
		/**
		 * 冒泡排序算法[从小到大]--优化
		 * 
		 * @param arr 被排序的数组
		 */
		public void bubbleSort() {
			// 外层for循环：轮数
			for (int i = 0; i < arrSort.length; i++) {
				// 内层for循环：完成两两比较交换
				for (int j = 0; j < arrSort.length - 1 - i; j++) {
					// 两两比较交换，排序规则：从小到大
					if (arrSort[j] < arrSort[j + 1]) {
						// 两个数进行交换
						int temp = arrSort[j];
						arrSort[j] = arrSort[j + 1];
						arrSort[j + 1] = temp;
					}
				}
			}
		}

		// 打印行为
		/**
		 * 打印数组
		 * 
		 * @param arr
		 */
		public void printArr() {
			// 打印数组元素
			for (int i : arrSort) {
				System.out.print("  " + i);
			}
			// 换行
			System.out.println();
		}

		/**
		 * 冒泡排序处理的总方法入口
		 */
		public void doBobbleAll() {
			// 初始化数组的行为
			doInit();
			// 打印行为
			System.out.println("初始化的数组内容：");
			printArr();
			// 排序
			bubbleSort();
			// 打印行为
			System.out.println("冒泡排序之后数组内容：");
			printArr();
		}
	}